Skip to content

feat: delete mode, indicator outlines, terser report messages - #174

Merged
Nachtalb merged 4 commits into
masterfrom
feat/report-delete-mode
Aug 25, 2026
Merged

feat: delete mode, indicator outlines, terser report messages#174
Nachtalb merged 4 commits into
masterfrom
feat/report-delete-mode

Conversation

@Nachtalb

Copy link
Copy Markdown
Owner

Summary

Message trims, a way to delete files without reporting anyone, and indicator marking.

Messages

  • A user with no @username now shows their full name instead of a placeholder dash — that dash was rendering as the stray · in front of the file count. Applies to /report, the create DM, and the console list (which said (no username) for users who do have a name).
  • The bare report link is a Reports button (plural — it opens the console).
  • Dropped offline and the Shown once and not stored… caption.

Delete mode — for material that's clearly unwanted but that nobody can attribute to a minor, where banning + filing with NCMEC would be wrong. A switch at the bottom of the report swaps the A1–NR scale for a single delete toggle and the Review button for a confirmed Delete. Selected files are destroyed, every other file in the round is restored to disk, the round closes as deleted, and the uploader is not banned. Deleted files are marked cleared so a later round can't drag them back in.

Indicator marking — a Cloudflare paste names specific files, but the round encrypts the uploader's whole history, so the triggering files vanish into the grid. They're now recorded on their blobs and drawn with a yellow outline, which sits outside the border and takes no layout space, so it composes with the selected state rather than shifting the grid.

Test plan

  • New: delete destroys only the selected files / restores the rest / leaves the user unbanned; a wrong key destroys nothing; indicator files are flagged on their blobs; resolve_targets returns the indicator map.
  • Full gate green: ruff check, ruff format --check, ty check, pytest (567 passed).
  • Both webview script blocks pass node --check.

Schema: one additive column (report_blobs.indicator, default 0) via the existing idempotent migration; one new status value.

…link

Fall back to the full name when a user has no @username instead of a
placeholder dash, which was rendering as a stray dot in front of the
file count. The report link becomes a Reports web_app button, and the
shown-once caption and the word 'offline' are gone.
The reports list showed '(no username)' for users who do have a name;
carry first/last name through the list API and the create DM so both
surfaces label a user the same way the command does. The DM also gets
the Reports button instead of a bare link.
A Cloudflare paste names specific files, but the round encrypts the
uploader's whole history — so the files that actually triggered it
disappear into the grid. Record them on their blobs and draw a yellow
outline around those thumbnails; outline sits outside the border and
takes no layout space, so it composes with the selected state.
A Cloudflare complaint can name material that's clearly unwanted but
that nobody can attribute to a minor. Banning the uploader and filing
with NCMEC is the wrong call there; deleting the files isn't.

A delete-mode switch swaps the classification scale for a single delete
toggle and the review button for a confirmed delete. The selected files
are destroyed, every other file in the round is restored to disk, the
round closes as 'deleted', and the uploader keeps their account. The
key is verified against every blob before anything is written or
deleted, so a wrong key destroys nothing.
@Nachtalb
Nachtalb merged commit 5ebd2f1 into master Aug 25, 2026
7 checks passed
@Nachtalb
Nachtalb deleted the feat/report-delete-mode branch August 25, 2026 15:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant